Development Models > Imperative Programming Model > Imperative Programming Model for OPC UA Alarms & Conditions > Browsing for Information (OPC UA Alarms & Conditions) > Browsing for OPC UA Event Sources |
In order to browse for event sources, you can use the pre-made browse parameters available in the UABrowseParameters.EventSources static property, and call the IEasyUAClient.Browse Method with them. Alternatively, you can use a dedicated extension method, IEasyUAClient.BrowseEventSources, to perform browsing for event sources easily.
// This example shows how to browse objects under the "Objects" node and display event sources. using System; using OpcLabs.EasyOpc.UA; using OpcLabs.EasyOpc.UA.AddressSpace; using OpcLabs.EasyOpc.UA.AddressSpace.Standard; using OpcLabs.EasyOpc.UA.OperationModel; namespace UADocExamples.AlarmsAndConditions { class BrowseEventSources { public static void Overload2() { // Start browsing from the "Objects" node. try { BrowseFrom(UAObjectIds.ObjectsFolder); } catch (UAException uaException) { Console.WriteLine($"*** Failure: {uaException.GetBaseException().Message}"); } Console.WriteLine(); Console.WriteLine("Finished."); } private static void BrowseFrom(UANodeDescriptor nodeDescriptor) { // Define which server we will work with. UAEndpointDescriptor endpointDescriptor = "opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer"; Console.WriteLine(); Console.WriteLine(); Console.WriteLine($"Parent node: {nodeDescriptor}"); // Instantiate the client object. var client = new EasyUAClient(); // Obtain event sources. UANodeElementCollection eventSourceNodeElementCollection = client.BrowseEventSources( endpointDescriptor, nodeDescriptor); // Display event sources. if (eventSourceNodeElementCollection.Count != 0) { Console.WriteLine(); Console.WriteLine("Event sources:"); foreach (UANodeElement eventSourceNodeElement in eventSourceNodeElementCollection) Console.WriteLine(eventSourceNodeElement); } // Obtain objects. UANodeElementCollection objectNodeElementCollection = client.BrowseObjects( endpointDescriptor, nodeDescriptor); // Recurse. foreach (UANodeElement objectNodeElement in objectNodeElementCollection) BrowseFrom(objectNodeElement); } // Example output (truncated): // // //Parent node: ObjectsFolder // // //Parent node: Server // //Event sources: //Green -> nsu=http://opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Green (Object) //Yellow -> nsu=http://opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Yellow (Object) // // //Parent node: Server_ServerCapabilities //... } }
# This example shows how to browse objects under the "Objects" node and display event sources. #requires -Version 5.1 using namespace OpcLabs.EasyOpc.UA using namespace OpcLabs.EasyOpc.UA.AddressSpace.Standard using namespace OpcLabs.EasyOpc.UA.Navigation.Parsing; using namespace OpcLabs.EasyOpc.UA.OperationModel function BrowseEventSourcesFrom([UANodeDescriptor]$nodeDescriptor) { # Define which server we will work with. [UAEndpointDescriptor]$endpointDescriptor = "opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer" Write-Host Write-Host Write-Host "Parent node: $($nodeDescriptor)" # Instantiate the client object. $client = New-Object EasyUAClient # Obtain event sources. $eventSourceNodeElementCollection = [IEasyUAClientExtension]::BrowseEventSources($client, $endpointDescriptor, $nodeDescriptor) # Display event sources. if ($eventSourceNodeElementCollection.Count -ne 0) { Write-Host Write-Host "Event sources:" foreach ($eventSourceNodeElement in $eventSourceNodeElementCollection) { Write-Host $eventSourceNodeElement } } # Obtain objects. $objectNodeElementCollection = [IEasyUAClientExtension]::BrowseObjects($client, $endpointDescriptor, $nodeDescriptor) # Recurse. foreach ($objectNodeElement in $objectNodeElementCollection) { BrowseEventSourcesFrom($objectNodeElement) } } # The path below assumes that the current directory is [ProductDir]/Examples-NET/PowerShell/Windows . Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcUA.dll" Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcUAComponents.dll" # Start browsing from the "Objects" node. try { [UANodeDescriptor]$startingNodeDescriptor = [UAObjectIds]::ObjectsFolder BrowseEventSourcesFrom $startingNodeDescriptor } catch [UAException] { Write-Host "*** Failure: $($PSItem.Exception.GetBaseException().Message)" return } Write-Host Write-Host "Finished." # Example output (truncated): # # #Parent node: ObjectsFolder # # #Parent node: Server # #Event sources: #Green -> nsu=http:#opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Green (Object) #Yellow -> nsu=http:#opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Yellow (Object) # # #Parent node: Server_ServerCapabilities #...
# This example shows how to browse objects under the "Objects" node and display event sources. # The QuickOPC package is needed. Install it using "pip install opclabs_quickopc". import opclabs_quickopc # Import .NET namespaces. from OpcLabs.EasyOpc.UA import * from OpcLabs.EasyOpc.UA.AddressSpace import * from OpcLabs.EasyOpc.UA.AddressSpace.Standard import * from OpcLabs.EasyOpc.UA.OperationModel import * # Define which server we will work with. endpointDescriptor = UAEndpointDescriptor('opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer') def browseFrom(nodeDescriptor): global endpointDescriptor print() print() print('Parent node: ', nodeDescriptor, sep='') # Instantiate the client object. client = EasyUAClient() # Obtain event sources. eventSourceNodeElementCollection = IEasyUAClientExtension.BrowseEventSources(client, endpointDescriptor, nodeDescriptor) # Display event sources. if eventSourceNodeElementCollection.Count != 0: print('') print('Event sources:') for eventSourceNodeElement in eventSourceNodeElementCollection: print(eventSourceNodeElement) # Obtain objects. objectNodeElementCollection = IEasyUAClientExtension.BrowseObjects(client, endpointDescriptor, nodeDescriptor) # Recurse. for objectNodeElement in objectNodeElementCollection: browseFrom(objectNodeElement.ToUANodeDescriptor()) # Start browsing from the "Objects" node. try: browseFrom(UANodeDescriptor(UAObjectIds.ObjectsFolder)) except UAException as uaException: print('*** Failure: ' + uaException.GetBaseException().Message) exit() print() print('Finished.')
' This example shows how to browse objects under the "Objects" node and display event sources. Imports OpcLabs.EasyOpc.UA Imports OpcLabs.EasyOpc.UA.AddressSpace Imports OpcLabs.EasyOpc.UA.AddressSpace.Standard Imports OpcLabs.EasyOpc.UA.OperationModel Namespace AlarmsAndConditions Friend Class BrowseEventSources Public Shared Sub Overload2() ' Start browsing from the "Objects" node Try BrowseFrom(UAObjectIds.ObjectsFolder) Catch uaException As UAException Console.WriteLine("*** Failure: {0}", uaException.GetBaseException.Message) End Try End Sub Private Shared Sub BrowseFrom(nodeDescriptor As UANodeDescriptor) Console.WriteLine() Console.WriteLine() Console.WriteLine("Parent node: {0}", nodeDescriptor) ' Instantiate the client object Dim client = New EasyUAClient() ' Obtain notifiers Dim eventSourceNodeElementCollection As UANodeElementCollection = client.BrowseEventSources( _ "opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer", _ nodeDescriptor) ' Display notifiers Console.WriteLine() Console.WriteLine("Event sources:") For Each eventSourceNodeElement As UANodeElement In eventSourceNodeElementCollection Console.WriteLine(eventSourceNodeElement) Next eventSourceNodeElement ' Obtain objects Dim objectNodeElementCollection = client.BrowseObjects( _ "opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer", _ nodeDescriptor) ' Recurse For Each objectNodeElement As UANodeElement In objectNodeElementCollection BrowseFrom(objectNodeElement) Next objectNodeElement End Sub End Class End Namespace
// This example shows how to browse objects under the "Objects" node and display event sources. class procedure BrowseEventSources.Main; var ObjectNodeId: _UANodeId; begin ObjectNodeId := CoUANodeId.Create; ObjectNodeId.StandardName := 'Objects'; try BrowseFrom(ObjectNodeId); except on E: EOleException do begin WriteLn(Format('*** Failure: %s', [E.GetBaseException.Message])); Exit; end; end; end; class procedure BrowseEventSources.BrowseFrom(NodeId: _UANodeId); var Client: OpcLabs_EasyOpcUA_TLB._EasyUAClient; Count: Cardinal; Element: OleVariant; EndpointDescriptor: string; EventSourceNodeElement: _UANodeElement; EventSourceNodeElementEnumerator: IEnumVariant; EventSourceNodeElements: _UANodeElementCollection; ObjectNodeElement: _UANodeElement; ObjectNodeElementEnumerator: IEnumVariant; ObjectNodeElements: _UANodeElementCollection; begin EndpointDescriptor := 'opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer'; WriteLn; WriteLn; WriteLn('Parent node: ', NodeId.ToString); // Instantiate the client object Client := CoEasyUAClient.Create; // Obtain event sources EventSourceNodeElements := Client.BrowseEventSources(EndpointDescriptor, NodeId.ExpandedText); // Display event sources if EventSourceNodeElements.Count <> 0 then begin WriteLn; WriteLn('Event sources:'); EventSourceNodeElementEnumerator := EventSourceNodeElements.GetEnumerator; while (EventSourceNodeElementEnumerator.Next(1, Element, Count) = S_OK) do begin EventSourceNodeElement := IUnknown(Element) as _UANodeElement; WriteLn(EventSourceNodeElement.ToString); end; end; // Obtain objects ObjectNodeElements := Client.BrowseObjects(EndpointDescriptor, NodeId.ExpandedText); // Recurse ObjectNodeElementEnumerator := ObjectNodeElements.GetEnumerator; while (ObjectNodeElementEnumerator.Next(1, Element, Count) = S_OK) do begin ObjectNodeElement := IUnknown(Element) as _UANodeElement; BrowseFrom(ObjectNodeElement.NodeId); end; end;
// This example shows how to browse objects under the "Objects" node and display event sources. // Start browsing from the "Objects" node $ObjectNodeId = new COM("OpcLabs.EasyOpc.UA.AddressSpace.UANodeId"); $ObjectNodeId->StandardName = "Objects"; try { BrowseFrom($ObjectNodeId); } catch (com_exception $e) { printf("*** Failure: %s\n", $e->getMessage()); exit(); } function BrowseFrom($NodeId) { $EndpointDescriptor = "opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer"; printf("\n"); printf("\n"); printf("Parent node: %s\n", $NodeId); // Instantiate the client object $Client = new COM("OpcLabs.EasyOpc.UA.EasyUAClient"); // Obtain event sources $EventSourceNodeElements = $Client->BrowseEventSources($EndpointDescriptor, $NodeId->ExpandedText); // Display event sources if ($EventSourceNodeElements->Count != 0) { printf("\n"); printf("Event sources:\n"); foreach ($EventSourceNodeElements as $EventSourceNodeElement) { printf("%s\n", $EventSourceNodeElement); } } // Obtain objects $ObjectNodeElements = $Client->BrowseObjects($EndpointDescriptor, $NodeId->ExpandedText); // Recurse foreach ($ObjectNodeElements as $ObjectNodeElement) { BrowseFrom($ObjectNodeElement->NodeId); } } // Example output (truncated): // // //Parent node: ObjectsFolder // // //Parent node: Server // //Event sources: //Green -> nsu=http://opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Green (Object) //Yellow -> nsu=http://opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Yellow (Object) // // //Parent node: Server_ServerCapabilities //...
Rem This example shows how to browse objects under the "Objects" node and display event sources. Option Explicit ' Start browsing from the "Objects" node Dim ObjectsNodeId: Set ObjectsNodeId = CreateObject("OpcLabs.EasyOpc.UA.AddressSpace.UANodeId") ObjectsNodeId.StandardName = "Objects" On Error Resume Next BrowseFrom ObjectsNodeId If Err.Number <> 0 Then WScript.Echo "*** Failure: " & Err.Source & ": " & Err.Description WScript.Quit End If On Error Goto 0 Sub BrowseFrom(NodeId) Dim endpointDescriptor endpointDescriptor = "opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer" WScript.Echo WScript.Echo WScript.Echo "Parent node: " & NodeId ' Instantiate the client object Dim Client: Set Client = CreateObject("OpcLabs.EasyOpc.UA.EasyUAClient") ' Obtain event sources Dim EventSourceNodeElementCollection: Set EventSourceNodeElementCollection = Client.BrowseEventSources( _ endpointDescriptor, NodeId.ExpandedText) ' Display event sources If EventSourceNodeElementCollection.Count <> 0 Then WScript.Echo WScript.Echo "Event sources:" Dim EventSourceNodeElement: For Each EventSourceNodeElement In EventSourceNodeElementCollection WScript.Echo EventSourceNodeElement Next End If ' Obtain objects Dim ObjectNodeElementCollection: Set ObjectNodeElementCollection = Client.BrowseObjects( _ endpointDescriptor, NodeId.ExpandedText) ' Recurse Dim ObjectNodeElement: For Each ObjectNodeElement In ObjectNodeElementCollection BrowseFrom ObjectNodeElement.NodeId Next End Sub ' Example output (truncated): ' ' 'Parent node: ObjectsFolder ' ' 'Parent node: Server ' 'Event sources: 'Green -> nsu=http://opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Green (Object) 'Yellow -> nsu=http://opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Yellow (Object) ' ' 'Parent node: Server_ServerCapabilities '...
Copyright © 2004-2023 CODE Consulting and Development, s.r.o., Plzen. All rights reserved. Web page: www.opclabs.com
Send Documentation Feedback. Resources: Knowledge Base. Technical support: Online Forums, FAQ.